1. Field of the Invention
The present invention relates generally to the field of parallel processing and, more specifically, to a system and method for using domains to identify dependent and independent operations.
2. Description of the Related Art
For various computing cases, a programmer writes code that generates units of work to be processed in a processing unit. Within a set of units of work generated by the code, some units of work may be dependent on one another, while other may be completely independent of one another. Units of work that dependent on one another need to be processed in order to preserve the dependency.
Processing units often include multiple processors, each processing units of work and generating outputs based on the processing. The outputs are assembled for further processing, if any. In a typical work distribution approach, any processor that has processing bandwidth pops a unit of work from top of an input queue, check for all the dependencies related to the unit of work, wait for all the prior units of work to complete, and then process the unit of work that was popped.
One drawback to such an approach is that it requires every processor to communicate with each other to indicate the completion of different units of work. Requiring inter-processor communication increases the processing burden on the processors as state needs to be managed and tracked constantly. In addition, units of work that are not dependent on any outstanding units of work but are not at the top of the input queue are not processed even when there is processing bandwidth, thus unnecessarily slowing down the processing of work.
As the foregoing illustrates, what is needed in the art is a mechanism for efficiently transmitting state information to the GPU over a limited-bandwidth channel and for providing a flexible interface to accept state information in a variety of formats.